import os
import time
import subprocess

def change_file_times(file_path, new_time):
    """
    改变文件的访问时间、修改时间和创建时间（Windows only for create_time）。
    
    参数:
    file_path (str): 文件路径。
    new_time (float): 文件的新时间戳。
    """

    # 将时间戳转换为字符串格式
    formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(new_time))

    try:
        # 修改文件的访问时间和修改时间
        os.utime(file_path, (new_time, new_time))
        
        if os.name == 'nt':  # 如果是在 Windows 系统上
            # 使用 PowerShell 设置文件的创建时间
            powershell_command = f'(Get-Item "{file_path}").CreationTime = "{formatted_time}"'
            subprocess.run(['powershell', '-Command', powershell_command], check=True)
        
        print(f"已成功更新文件 '{file_path}' 的所有时间至 {formatted_time}。")
        
    except OSError as e:
        print(f"更新文件 '{file_path}' 时间失败: {e}")
    except subprocess.CalledProcessError as e:
        print(f"设置文件 '{file_path}' 创建时间失败: {e}")

def main():
    # 获取用户输入的文件路径
    target_file = input("请输入文件名称.后缀名称: ").strip()
    if not os.path.isfile(target_file):
        print(f"错误：'{target_file}' 不是有效的文件路径。")
        return
    
    # 获取用户输入的目标时间
    while True:
        try:
            new_time_str = input("请输入新的日期时间 (格式: YYYY-MM-DD HH:MM:SS): ").strip()
            new_time = time.mktime(time.strptime(new_time_str, '%Y-%m-%d %H:%M:%S'))
            break
        except ValueError:
            print("错误：请按照正确的格式输入日期时间。")

    # 更新文件时间
    change_file_times(target_file, new_time)

if __name__ == "__main__":
    main()